/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package it.univaq.iw.jweb.data;


import java.sql.Blob;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;
import java.util.TreeSet;

/**
 *
 * @author stefano
 */
public class Curriculum implements Comparable<Curriculum>{

    private int id;

    private String nome;
    private String cognome;
    private Date dataDiNascita;
    private String sesso;
    private String cap;
    private String indirizzo;
    private String citta;
    private String provincia;
    private String telefono;
    private String email;
    private String automunito;

    private List<Patente> patenti;
    private TreeSet<EsperienzaLavorativa> esperienzeLavorative;
    private TreeSet<TitoloDiStudio> titoliDiStudio;
    private List<Lingua> lingue;
    private CapacitaCompetenza capacitaCompetenze;

    private Blob foto;

    public Curriculum() {
    }

    public Curriculum(String nome, String cognome, Date dataDiNascita, String sesso, String cap,
            String indirizzo, String citta, String provincia, String telefono, String email, String automunito) {
        this.nome = nome;
        this.cognome = cognome;
        this.dataDiNascita = dataDiNascita;
        this.sesso = sesso;
        this.cap = cap;
        this.indirizzo = indirizzo;
        this.citta = citta;
        this.provincia = provincia;
        this.telefono = telefono;
        this.email = email;
        this.automunito = automunito;
        this.patenti = new ArrayList();
        this.esperienzeLavorative = new TreeSet();
        this.titoliDiStudio = new TreeSet();
        this.lingue = new ArrayList();
    }

    public Curriculum(int id, Curriculum curriculum) {
        this.id = id;

        this.nome = curriculum.getNome();
        this.cognome = curriculum.getCognome();
        this.dataDiNascita = curriculum.getDataDiNascita();
        this.sesso = curriculum.getSesso();
        this.cap = curriculum.getCap();
        this.indirizzo = curriculum.getIndirizzo();
        this.citta = curriculum.getCitta();
        this.provincia = curriculum.getProvincia();
        this.telefono = curriculum.getTelefono();
        this.email = curriculum.getEmail();
        this.automunito = curriculum.getAutomunito();
        this.patenti = curriculum.getPatenti();
        this.esperienzeLavorative = curriculum.getEsperienzeLavorative();
        this.titoliDiStudio = curriculum.getTitoliDiStudio();
        this.lingue = curriculum.getLingue();
    }

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the cognome
     */
    public String getCognome() {
        return cognome;
    }

    /**
     * @param cognome the cognome to set
     */
    public void setCognome(String cognome) {
        this.cognome = cognome;
    }

    /**
     * @return the sesso
     */
    public String getSesso() {
        return sesso;
    }

    /**
     * @param sesso the sesso to set
     */
    public void setSesso(String sesso) {
        this.sesso = sesso;
    }

    /**
     * @return the cap
     */
    public String getCap() {
        return cap;
    }

    /**
     * @param cap the cap to set
     */
    public void setCap(String cap) {
        this.cap = cap;
    }

    /**
     * @return the indirizzo
     */
    public String getIndirizzo() {
        return indirizzo;
    }

    /**
     * @param indirizzo the indirizzo to set
     */
    public void setIndirizzo(String indirizzo) {
        this.indirizzo = indirizzo;
    }

    /**
     * @return the citta
     */
    public String getCitta() {
        return citta;
    }

    /**
     * @param citta the citta to set
     */
    public void setCitta(String citta) {
        this.citta = citta;
    }

    /**
     * @return the provincia
     */
    public String getProvincia() {
        return provincia;
    }

    /**
     * @param provincia the provincia to set
     */
    public void setProvincia(String provincia) {
        this.provincia = provincia;
    }

    /**
     * @return the telefono
     */
    public String getTelefono() {
        return telefono;
    }

    /**
     * @param telefono the telefono to set
     */
    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    /**
     * @return the email
     */
    public String getEmail() {
        return email;
    }

    /**
     * @param email the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * @return the automunito
     */
    public String getAutomunito() {
        return automunito;
    }

    /**
     * @param automunito the automunito to set
     */
    public void setAutomunito(String automunito) {
        this.automunito = automunito;
    }

    /**
     * @return the dataDiNascita
     */
    public Date getDataDiNascita() {
        return dataDiNascita;
    }

    /**
     * @param dataDiNascita the dataDiNascita to set
     */
    public void setDataDiNascita(Date dataDiNascita) {
        this.dataDiNascita = dataDiNascita;
    }

    /**
     * @return the patenti
     */
    public List<Patente> getPatenti() {
        return patenti;
    }

    /**
     * @param patenti the patenti to set
     */
    public void setPatenti(List<Patente> patenti) {
        this.patenti = patenti;
    }

    /**
     * @return the esperienzeLavorative
     */
    public TreeSet<EsperienzaLavorativa> getEsperienzeLavorative() {
        return esperienzeLavorative;
    }

    /**
     * @param esperienzeLavorative the esperienzeLavorative to set
     */
    public void setEsperienzeLavorative(TreeSet<EsperienzaLavorativa> esperienzeLavorative) {
        this.esperienzeLavorative = esperienzeLavorative;
    }

    /**
     * @return the titoliDiStudio
     */
    public TreeSet<TitoloDiStudio> getTitoliDiStudio() {
        return titoliDiStudio;
    }

    /**
     * @param titoliDiStudio the titoliDiStudio to set
     */
    public void setTitoliDiStudio(TreeSet<TitoloDiStudio> titoliDiStudio) {
        this.titoliDiStudio = titoliDiStudio;
    }

    /**
     * @return the lingue
     */
    public List<Lingua> getLingue() {
        return lingue;
    }

    /**
     * @param lingue the lingue to set
     */
    public void setLingue(List<Lingua> lingue) {
        this.lingue = lingue;
    }

    /**
     * @return the capacitaCompetenze
     */
    public CapacitaCompetenza getCapacitaCompetenze() {
        return capacitaCompetenze;
    }

    /**
     * @param capacitaCompetenze the capacitaCompetenze to set
     */
    public void setCapacitaCompetenze(CapacitaCompetenza capacitaCompetenze) {
        this.capacitaCompetenze = capacitaCompetenze;
    }

    /**
     * @return the foto
     */
    public Blob getFoto() {
        return foto;
    }

    /**
     * @param foto the foto to set
     */
    public void setFoto(Blob foto) {
        this.foto = foto;
    }

    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }

    public int compareTo(Curriculum curr) {
        
        if(this.id == curr.id) return 0;
        if(this.nome.compareToIgnoreCase(curr.nome) >= 0)return 1;
        else return -1;
    }

}
